
#ifndef __I2C_SOFT_H__
#define __I2C_SOFT_H__
#include "gd32f4xx.h"
#include "systick.h"

// i2c 执行情况
#define I2C_RESULT_OK            0    // 成功
#define I2C_ERR_DEVICE_ADDR      1    // 发送设备地址错误
#define I2C_ERR_REGISTER_ADDR    2    // 发送寄存器地址错误
#define I2C_ERR_WRITE            3    // 写数据时出现错误
#define I2C_ERR_READ             4    // 读数据时出现错误

//引脚配置
#define I2C_SCL_PORT   GPIOB
#define I2C_SCL_PIN    GPIO_PIN_6
#define I2C_SCL_RCU    RCU_GPIOB

#define I2C_SDA_PORT   GPIOB
#define I2C_SDA_PIN    GPIO_PIN_7
#define I2C_SDA_RCU    RCU_GPIOB

void i2c_soft_init();
// addr  设备地址    reg寄存器地址  data 保存数据的数组指针  len数据长度
uint8_t i2c_soft_read(uint8_t addr, uint8_t reg, uint8_t* data, uint32_t len);
uint8_t i2c_soft_write(uint8_t addr, uint8_t reg, uint8_t* data, uint32_t len);
uint8_t i2c_soft_write2(uint8_t addr, uint8_t reg, uint8_t* data, uint32_t offset, uint32_t len);
#endif